home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / AIAT / Headers / Accessor / VectorAccessor.h < prev   
Encoding:
Text File  |  1998-04-16  |  3.3 KB  |  124 lines  |  [TEXT/CWIE]

  1. // VectorAccessor.h
  2. //    Copyright:    © 1994 - 1996-1997 - 1998 by Apple Computer, Inc., all rights reserved.
  3. // Implements ExactSearch and RankedSearch over VectorIndices
  4.  
  5. #pragma once
  6. #ifndef VectorAccessor_h
  7. #define VectorAccessor_h
  8.  
  9. #pragma import on
  10.  
  11. #if PRAGMA_STRUCT_ALIGN
  12.     #pragma options align=power
  13. #endif
  14.  
  15. #include "RankedAccessor.h"
  16. #include "TWVector.h"
  17.  
  18. #pragma IA_BEGIN_EXPORTS
  19.  
  20. class VectorIndex;
  21. class IAQuery;
  22.  
  23. const uint32 VectorAccessorType = 'Vec0';
  24.  
  25. class VectorAccessor : public virtual RankedAccessor {
  26.     friend class VectorScorer;
  27. public:
  28.         VectorAccessor(VectorIndex** indices, uint32 indexCount, uint32 t = VectorAccessorType);
  29.         VectorAccessor(VectorIndex** index_ptr_ptr, TermIndex* context);
  30.         ~VectorAccessor();
  31.  
  32.  
  33.     uint32        RankedSearch(byte*                     textQuery,     uint32     textQueryLen,
  34.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  35.                              RankedHit**            results,    uint32    resultLen,
  36.                              uint32                matchingTermsLen,
  37.                              RankedProgressFn*        progressFn,
  38.                              clock_t                progressFreq,
  39.                              void*                    appData);
  40.                              
  41.     uint32        RankedSearch(IADocText*             textQuery,
  42.                              RankedQueryDoc*         docQuery,     uint32     docQueryLen,
  43.                              RankedHit**            results,    uint32    resultLen,
  44.                              uint32                matchingTermsLen,
  45.                              RankedProgressFn*        progressFn,
  46.                              clock_t                progressFreq,
  47.                              void*                    appData);
  48.  
  49.     uint32        GetDocTopic(RankedQueryDoc*        doc,
  50.                              IATerm**            results,    uint32    resultLen,
  51.                             RankedProgressFn*    progressFn,
  52.                              clock_t                progressFreq,
  53.                              void*                appData);
  54.  
  55.     uint32    GetTermsRelated(byte*             term,     uint32     termLen,
  56.                                  IATerm**            results,    uint32    resultLen,
  57.                                 RankedProgressFn*    progressFn,
  58.                                  clock_t                progressFreq,
  59.                                  void*                appData);
  60.  
  61.     // returns the vector for a doc from the Nth index of this accessor
  62.     TWVector*        GetTWVector(IADoc* doc, uint32 index);
  63. protected:
  64.     void            Initializing();
  65.  
  66.     IABlockSize        InitsSize();
  67.     void            StoringInits(IAOutputBlock* output);
  68.     void            RestoringInits(IAInputBlock* input);
  69.     
  70.     void            UpdatingInits(IAInputBlock* input);
  71.     void             ExtendingInits();
  72.     
  73.     virtual void    CacheTermStats(TermInfo** infos);
  74.  
  75.     float            TermScaleFactor(uint32 index, TermID termID) {
  76.                         return TermScaleFactor(termScaleFactors[index], termID);
  77.                     }
  78.     float            TermScaleFactor(byte* scaleFactors, TermID termID) {
  79.                         return scaleFactorDecoder[scaleFactors[termID]];
  80.                     }
  81.                     
  82.     TermID*            GetOldTermCounts() const {return fOldNumberOfTerms;}
  83.     TermID*            GetNewTermCounts() const {return fNewNumberOfTerms;}
  84.  
  85.     void            UpdateCacheTermStats(TermInfo** infos);
  86.     
  87. private:
  88.     byte**            termScaleFactors;
  89.     float*            scaleFactorDecoder;
  90.     byte*            scaleFactorEncoder;
  91.     float            scaleFactorEncodingFactor;
  92.  
  93.     TermID*            fOldNumberOfTerms;
  94.     TermID*            fNewNumberOfTerms;
  95.  
  96.     
  97.     void            MakeScaleFactorCodec();
  98.     inline byte        EncodeScaleFactor(TermFreq docCount);
  99.     inline byte        EncodeScaleFactorInternal(TermFreq docCount);
  100.     void            MergeTermInfos();
  101.  
  102.     IAIndex**        UpcastIndices(VectorIndex** is, uint32 n);
  103.                     VectorAccessor(VectorAccessor&);
  104.                     
  105.     uint32        GetDocTopicInternal(RankedQueryDoc*        doc,
  106.                              TWVector**            results,
  107.                             RankedProgressFn*    progressFn,
  108.                              clock_t                progressFreq,
  109.                              void*                appData);
  110.                              
  111.     
  112.  
  113. };
  114.  
  115. #pragma IA_END_EXPORTS
  116.  
  117. #if PRAGMA_STRUCT_ALIGN
  118.     #pragma options align=reset
  119. #endif
  120.  
  121. #pragma import reset
  122.  
  123. #endif
  124.